package runTime;

import TAProgram.IR;
import util.GraphUtil;

import java.io.IOException;
import java.lang.reflect.Array;

public class Main {

    public static void main(String[] args) throws IOException, InterruptedException {
        var ir = IR.mock();
        System.out.println(ir.toString());
        GraphUtil graphUtil = new GraphUtil();
        graphUtil.setSourcePath("/Users/bytedance/graphpackage/in1");
        graphUtil.setTargetPath("/Users/bytedance/graphpackage/out1.jpg");
        DrawGraph.draw(graphUtil);
        GraphUtil.saveCodeToFile(graphUtil.getSourcePath(),graphUtil.getCode());
        Thread.sleep(2000);
        GraphUtil.genAndOpenGraph(graphUtil.getSourcePath(),graphUtil.getTargetPath());
        Thread.sleep(2000);
        for(var block : IR.basicBlocks){
            Optimizer.mathOpt(block);
            Optimizer.expressionAnalyze(block);
        }
        Thread.sleep(2000);
        System.out.println(ir.toString());
        graphUtil.setSourcePath("/Users/bytedance/graphpackage/in2");
        graphUtil.setTargetPath("/Users/bytedance/graphpackage/out2.jpg");
        DrawGraph.draw(graphUtil);
        GraphUtil.saveCodeToFile(graphUtil.getSourcePath(),graphUtil.getCode());
        Thread.sleep(2000);
        GraphUtil.genAndOpenGraph(graphUtil.getSourcePath(),graphUtil.getTargetPath());
    }
}
